package com.promote.hotspot.server.guava;

import com.google.common.collect.Queues;

import java.util.ArrayList;
import java.util.Date;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;

public class DrainExample {

    public static void main(String[] args) throws InterruptedException {
        // 创建一个 BlockingQueue
        BlockingQueue<String> queue = new LinkedBlockingQueue<>();

        // 添加一些元素到队列中
        queue.add("Element1");
        queue.add("Element2");
        queue.add("Element3");

        // 创建一个 List 来存储从队列中移除的元素
        ArrayList<String> drainedElements = new ArrayList<>();

        // 使用 Queues.drain() 移除并收集队列中的所有元素
        int maxElementsToDrain = 2; // 可以指定要移除的最大数量
        System.out.println(new Date());
        Queues.drain(queue, drainedElements, maxElementsToDrain, 5, TimeUnit.SECONDS); // 设置超时时间为5秒

        // 打印已移除并收集到drainedElements中的元素
        System.out.println(new Date());
        for (String element : drainedElements) {
            System.out.println(element);
        }
    }
}